<?php
namespace Swiftx\Interfaces\Httpd;
use Swiftx\Interfaces\Router\Request as RequestInterface;

/**
 * 请求对象实现类
 */
interface Request extends RequestInterface{

    /**
     * 设置SSL支持
     * @param bool $enable
     */
    public function setSupportSSL(bool $enable=true);

    /**
     * 是否支持SSL
     * @return bool
     */
    public function getSupportSSL();

    /**
     * 设置语言
     * @param string $value
     */
    public function setLanguage(string $value);

    /**
     * 设置语言
     * @param string[] ...$value
     */
    public function setLanguages(string ...$value);

    /**
     * 读取语言
     * @return string[]
     */
    public function getLanguages():array;

    /**
     * 设置Cookie对象
     * @param Cookie $value
     */
    public function setCookie(Cookie $value);

    /**
     * 获取Cookie对象
     * @return Cookie
     */
    public function getCookie():Cookie;

    /**
     * 获取SESSION对象
     * @return Session
     */
    public function getSession():Session;

    /**
     * 设置SESSION对象
     * @param Session $value
     */
    public function setSession(Session $value);

    /**
     * 获取POST对象
     * @return Post
     */
    public function getPost():Post;

    /**
     * 设置POST对象
     * @param Post $post
     */
    public function setPost(Post $post);

    /**
     * 设置上传对象
     * @param Upload $value
     */
    public function setUpload(string $name, Upload $value);

    /**
     * 获取文件上传者
     * @return Upload
     */
    public function getUpload(string $name):Upload;

}
